#ifndef CALCULATORUI_H
#define CALCULATORUI_H

#include <QWidget>
#include <QLineEdit>
#include <QPushButton>

#include "ICalculator.h"

class CalculatorUI : public QWidget
{
    Q_OBJECT
protected:
    ICalculator* m_cal; /* 接口 */

private:
    QLineEdit* m_edit;
    QPushButton* m_buttons[20];

    CalculatorUI();     // 第一阶构造函数, 私有函数
    bool construct();   // 第二阶构造函数, 私有函数, UI界面代码在这个函数实现

public:
    static CalculatorUI* NewInstance(); // 创建实例, 使用到二阶构造函数
    void show();

    // Calculator interface public method
    ICalculator* getCalculator();
    void setCalculator(ICalculator* cal);

protected slots:
    void onButtonClicked();

};

#endif // CALCULATORUI_H
